When data in a database is updated by a device or application, the data in the database is locked until the device or application making the changes to the data releases the data or terminates a session with the database. Locking of the data in a database may affect performance of the database and/or devices and applications connected thereto. Additionally, while the data in the database is locked, other devices and/or applications may be unable to access or make changes to the data.
The issue of locking is particularly pronounced during long-running transactions and/or for databases where a number of users, applications, or devices are authorized to access the data. Other long-running transactions include instances wherein multiple queries and/or modifications to the same data are made in succession and/or when numerous and/or complex computations on the data are executed by a device or application accessing the data. In these and other cases, the devices and/or applications modifying the data may perform various calculations and/or operations on the data while the data is locked, thereby preventing access to the data by other applications and/or devices.
One attempt at mitigating problems caused by data locking involves the use of a cache holding all changes at the device accessing the data in the database. Changes to the data are cached at the device instead of the data being locked. When the device is ready to commit the changes to the database, the data is locked and the changes are submitted at one time. Caching changes requires additional computational resources at the devices, however, as the devices must perform post-processing operations on query results to reflect changes cached at the device. These post-processing steps can become extremely complex depending upon the number of changes cached at the devices, and where numerous computations build on each other, may degrade performance of the devices.
It is with respect to these and other considerations that the disclosure made herein is presented.